package com.airlines.crewassignment.domain;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import com.airlines.crewassignment.domain.crew.CrewExamine;
import com.airlines.crewassignment.domain.crew.CrewRestDateTime;
import com.airlines.crewassignment.entity.ValueForDate;

/**
 * @author xxxx
 * @date 2018年3月27日 
 * @description 飞行员飞行经历、执勤期、起落次数等经历、时间相关的属性
 */
 
public class CrewFlightExperience  implements Serializable{
	private static final long serialVersionUID = -7382580820529988236L;
	private String workcode;
	private Date beforeFlightDate; //截止日期，由于飞行员的飞行经历时间是不断变化的，所以要有一个日期字段来表示该经历的统计截止日期，该 日期一般是指排班开始日期
	private Date endFlightDate;    //该日期是指排班结束日期
	private Integer flightDurationLastYear;  //近一年飞行时间（分钟）
	private Integer flightDurationLastMonth; //近一月飞行时间（分钟）
	private Integer flightDurationLastWeek;	 //近一周飞行时间（分钟）
	private Integer nightPassCountLastYear;  //近一年外站过夜次数
	private Integer nightPassCountLastMonth; //近一月外站过夜次数
	private Integer nightPassCountLastWeek;	 //近一周外站过夜次数
	private Integer dutyDurationLastYear;	 //近一年执勤时间（分钟）
	private Integer dutyDurationLastMonth;	 //近一月执勤时间（分钟）
	private Integer dutyDurationLastWeek;	 //近一周执勤时间（分钟）
	private Integer nightFlyCountLastYear;	 //近一年夜航次数
	private Integer nightFlyCountLastMonth;	 //近一月夜航次数
	private Integer badFlightCountLastYear;	 //近一年差航段次数
	private Integer badFlightCountLastMonth;	 //近一月差航段次数
	private Integer seatDurationAll;//飞行员所有的经历时间 来源：T3005.SEAT_HOURS
	
	private Integer flightMoreThanCountLastYear ;//最近一年一个航线有N个航段的次数统计
	private Integer flightMoreThanCountLastMonth ;//最近一月一个航线有N个航段的次数统计
	
	private Integer lastVacationAndStopFly ;//上一次休假或者停飞，距离排班时刻的天数
	private Integer lastSickLeave;//上一次病假，记录排班时刻的天数
	
	private List<ValueForDate> dutyDurationList;//基于当前排班日期的前6天的执勤期，用于计算任意七天的值勤期
	private List<CrewRestDateTime> crewRestDateTimeList = new ArrayList<>(); //基于当前排班日期前144小时内的连续休息期
//	private int crewRest48xCount ; //基于当前排班日期前144小时内的连续休息期
//	private int crewRest10xCount ; //基于当前排班日期前10X小时内的连续休息期
	private List<CrewTask> crewTaskListBetweenFlightDate = new ArrayList<>();//所有的排版范围时间内的任务
	private List<CrewExamine> crewExamineList = new ArrayList<>(); //排班前所有的培训复训检查有效期等信息
	private String lastAirport ;//排班开始前，最后所在机场
	private LinkLine lastLinkLine;//beforeFlightDate前，最后一个连线信息
	private List<FlightInfo> flightInfoListYear = new ArrayList<>();//飞行员最近一年段时间内的航班数量
	private Set<String> airPortsSetLastSixMonth = new HashSet<>(); //飞行员近6个月执行的航段集合，集合的形式为：
	
	
	private List<CrewFlightExperienceAcType> cfeAcTypeList = new ArrayList<>(); //与机型强相关的数据
	
	// 以下是指标排名得分,在所有的飞行员中,命名规则必须是指标+Rank
	private int flightDurationLastYearRank; 
	private int flightDurationLastMonthRank; //近一月飞行时间（分钟）
//	private int flightDurationLastWeekRank;	 //近一周飞行时间（分钟）
	private int nightPassCountLastYearRank;  //近一年外站过夜次数
	private int nightPassCountLastMonthRank; //近一月外站过夜次数
//	private int nightPassCountLastWeekRank;	 //近一周外站过夜次数
	private int dutyDurationLastYearRank;	 //近一年执勤时间（分钟）
	private int dutyDurationLastMonthRank;	 //近一月执勤时间（分钟）
//	private int dutyDurationLastWeekRank;	 //近一周执勤时间（分钟）
	private int flightMoreThanCountLastYearRank ;//最近一年一个航线有4个航段的次数统计
	private int flightMoreThanCountLastMonthRank ;//最近一年一个航线有4个航段的次数统计
	
	private int nightFlyCountLastYearRank ;//近一年夜航次数
	private int nightFlyCountLastMonthRank ;//近一月夜航次数
	
	private Integer badFlightCountLastYearRank;	 //近一年差航段次数
	private Integer badFlightCountLastMonthRank;	 //近一月差航段次数
	
	private int lastVacationAndStopFlyRank ;//上一次休假或者停飞，距离排班时刻的天数排名
	
	private int seatDurationAllRank ;////飞行员所有的经历时间排名 来源：T3005.SEAT_HOURS

	public String getWorkcode() {
		return workcode;
	}

	public void setWorkcode(String workcode) {
		this.workcode = workcode;
	}

	public Date getBeforeFlightDate() {
		return beforeFlightDate;
	}

	public void setBeforeFlightDate(Date beforeFlightDate) {
		this.beforeFlightDate = beforeFlightDate;
	}

	public Date getEndFlightDate() {
		return endFlightDate;
	}

	public void setEndFlightDate(Date endFlightDate) {
		this.endFlightDate = endFlightDate;
	}

	public Integer getFlightDurationLastYear() {
		return flightDurationLastYear;
	}

	public void setFlightDurationLastYear(Integer flightDurationLastYear) {
		this.flightDurationLastYear = flightDurationLastYear;
	}

	public Integer getFlightDurationLastMonth() {
		return flightDurationLastMonth;
	}

	public void setFlightDurationLastMonth(Integer flightDurationLastMonth) {
		this.flightDurationLastMonth = flightDurationLastMonth;
	}

	public Integer getFlightDurationLastWeek() {
		return flightDurationLastWeek;
	}

	public void setFlightDurationLastWeek(Integer flightDurationLastWeek) {
		this.flightDurationLastWeek = flightDurationLastWeek;
	}

	public Integer getNightPassCountLastYear() {
		return nightPassCountLastYear;
	}

	public void setNightPassCountLastYear(Integer nightPassCountLastYear) {
		this.nightPassCountLastYear = nightPassCountLastYear;
	}

	public Integer getNightPassCountLastMonth() {
		return nightPassCountLastMonth;
	}

	public void setNightPassCountLastMonth(Integer nightPassCountLastMonth) {
		this.nightPassCountLastMonth = nightPassCountLastMonth;
	}

	public Integer getNightPassCountLastWeek() {
		return nightPassCountLastWeek;
	}

	public void setNightPassCountLastWeek(Integer nightPassCountLastWeek) {
		this.nightPassCountLastWeek = nightPassCountLastWeek;
	}

	public Integer getDutyDurationLastYear() {
		return dutyDurationLastYear;
	}

	public void setDutyDurationLastYear(Integer dutyDurationLastYear) {
		this.dutyDurationLastYear = dutyDurationLastYear;
	}

	public Integer getDutyDurationLastMonth() {
		return dutyDurationLastMonth;
	}

	public void setDutyDurationLastMonth(Integer dutyDurationLastMonth) {
		this.dutyDurationLastMonth = dutyDurationLastMonth;
	}

	public Integer getDutyDurationLastWeek() {
		return dutyDurationLastWeek;
	}

	public void setDutyDurationLastWeek(Integer dutyDurationLastWeek) {
		this.dutyDurationLastWeek = dutyDurationLastWeek;
	}

	public Integer getNightFlyCountLastYear() {
		return nightFlyCountLastYear;
	}

	public void setNightFlyCountLastYear(Integer nightFlyCountLastYear) {
		this.nightFlyCountLastYear = nightFlyCountLastYear;
	}

	public Integer getNightFlyCountLastMonth() {
		return nightFlyCountLastMonth;
	}

	public void setNightFlyCountLastMonth(Integer nightFlyCountLastMonth) {
		this.nightFlyCountLastMonth = nightFlyCountLastMonth;
	}

	public Integer getBadFlightCountLastYear() {
		return badFlightCountLastYear;
	}

	public void setBadFlightCountLastYear(Integer badFlightCountLastYear) {
		this.badFlightCountLastYear = badFlightCountLastYear;
	}

	public Integer getBadFlightCountLastMonth() {
		return badFlightCountLastMonth;
	}

	public void setBadFlightCountLastMonth(Integer badFlightCountLastMonth) {
		this.badFlightCountLastMonth = badFlightCountLastMonth;
	}

	public Integer getSeatDurationAll() {
		return seatDurationAll;
	}

	public void setSeatDurationAll(Integer seatDurationAll) {
		this.seatDurationAll = seatDurationAll;
	}

	public Integer getFlightMoreThanCountLastYear() {
		return flightMoreThanCountLastYear;
	}

	public void setFlightMoreThanCountLastYear(Integer flightMoreThanCountLastYear) {
		this.flightMoreThanCountLastYear = flightMoreThanCountLastYear;
	}

	public Integer getFlightMoreThanCountLastMonth() {
		return flightMoreThanCountLastMonth;
	}

	public void setFlightMoreThanCountLastMonth(Integer flightMoreThanCountLastMonth) {
		this.flightMoreThanCountLastMonth = flightMoreThanCountLastMonth;
	}

	public Integer getLastVacationAndStopFly() {
		return lastVacationAndStopFly;
	}

	public void setLastVacationAndStopFly(Integer lastVacationAndStopFly) {
		this.lastVacationAndStopFly = lastVacationAndStopFly;
	}

	public Integer getLastSickLeave() {
		return lastSickLeave;
	}

	public void setLastSickLeave(Integer lastSickLeave) {
		this.lastSickLeave = lastSickLeave;
	}

	public List<ValueForDate> getDutyDurationList() {
		return dutyDurationList;
	}

	public void setDutyDurationList(List<ValueForDate> dutyDurationList) {
		this.dutyDurationList = dutyDurationList;
	}

	public List<CrewRestDateTime> getCrewRestDateTimeList() {
		return crewRestDateTimeList;
	}

	public void setCrewRestDateTimeList(List<CrewRestDateTime> crewRestDateTimeList) {
		this.crewRestDateTimeList = crewRestDateTimeList;
	}

	public List<CrewTask> getCrewTaskListBetweenFlightDate() {
		return crewTaskListBetweenFlightDate;
	}

	public void setCrewTaskListBetweenFlightDate(List<CrewTask> crewTaskListBetweenFlightDate) {
		this.crewTaskListBetweenFlightDate = crewTaskListBetweenFlightDate;
	}

	public List<CrewExamine> getCrewExamineList() {
		return crewExamineList;
	}

	public void setCrewExamineList(List<CrewExamine> crewExamineList) {
		this.crewExamineList = crewExamineList;
	}

	public String getLastAirport() {
		return lastAirport;
	}

	public void setLastAirport(String lastAirport) {
		this.lastAirport = lastAirport;
	}

	public LinkLine getLastLinkLine() {
		return lastLinkLine;
	}

	public void setLastLinkLine(LinkLine lastLinkLine) {
		this.lastLinkLine = lastLinkLine;
	}

	public List<FlightInfo> getFlightInfoListYear() {
		return flightInfoListYear;
	}

	public void setFlightInfoListYear(List<FlightInfo> flightInfoListYear) {
		this.flightInfoListYear = flightInfoListYear;
	}

	public Set<String> getAirPortsSetLastSixMonth() {
		return airPortsSetLastSixMonth;
	}

	public void setAirPortsSetLastSixMonth(Set<String> airPortsSetLastSixMonth) {
		this.airPortsSetLastSixMonth = airPortsSetLastSixMonth;
	}

	public List<CrewFlightExperienceAcType> getCfeAcTypeList() {
		return cfeAcTypeList;
	}

	public void setCfeAcTypeList(List<CrewFlightExperienceAcType> cfeAcTypeList) {
		this.cfeAcTypeList = cfeAcTypeList;
	}

	public int getFlightDurationLastYearRank() {
		return flightDurationLastYearRank;
	}

	public void setFlightDurationLastYearRank(int flightDurationLastYearRank) {
		this.flightDurationLastYearRank = flightDurationLastYearRank;
	}

	public int getFlightDurationLastMonthRank() {
		return flightDurationLastMonthRank;
	}

	public void setFlightDurationLastMonthRank(int flightDurationLastMonthRank) {
		this.flightDurationLastMonthRank = flightDurationLastMonthRank;
	}

	public int getNightPassCountLastYearRank() {
		return nightPassCountLastYearRank;
	}

	public void setNightPassCountLastYearRank(int nightPassCountLastYearRank) {
		this.nightPassCountLastYearRank = nightPassCountLastYearRank;
	}

	public int getNightPassCountLastMonthRank() {
		return nightPassCountLastMonthRank;
	}

	public void setNightPassCountLastMonthRank(int nightPassCountLastMonthRank) {
		this.nightPassCountLastMonthRank = nightPassCountLastMonthRank;
	}

	public int getDutyDurationLastYearRank() {
		return dutyDurationLastYearRank;
	}

	public void setDutyDurationLastYearRank(int dutyDurationLastYearRank) {
		this.dutyDurationLastYearRank = dutyDurationLastYearRank;
	}

	public int getDutyDurationLastMonthRank() {
		return dutyDurationLastMonthRank;
	}

	public void setDutyDurationLastMonthRank(int dutyDurationLastMonthRank) {
		this.dutyDurationLastMonthRank = dutyDurationLastMonthRank;
	}

	public int getFlightMoreThanCountLastYearRank() {
		return flightMoreThanCountLastYearRank;
	}

	public void setFlightMoreThanCountLastYearRank(int flightMoreThanCountLastYearRank) {
		this.flightMoreThanCountLastYearRank = flightMoreThanCountLastYearRank;
	}

	public int getFlightMoreThanCountLastMonthRank() {
		return flightMoreThanCountLastMonthRank;
	}

	public void setFlightMoreThanCountLastMonthRank(int flightMoreThanCountLastMonthRank) {
		this.flightMoreThanCountLastMonthRank = flightMoreThanCountLastMonthRank;
	}

	public int getNightFlyCountLastYearRank() {
		return nightFlyCountLastYearRank;
	}

	public void setNightFlyCountLastYearRank(int nightFlyCountLastYearRank) {
		this.nightFlyCountLastYearRank = nightFlyCountLastYearRank;
	}

	public int getNightFlyCountLastMonthRank() {
		return nightFlyCountLastMonthRank;
	}

	public void setNightFlyCountLastMonthRank(int nightFlyCountLastMonthRank) {
		this.nightFlyCountLastMonthRank = nightFlyCountLastMonthRank;
	}

	public Integer getBadFlightCountLastYearRank() {
		return badFlightCountLastYearRank;
	}

	public void setBadFlightCountLastYearRank(Integer badFlightCountLastYearRank) {
		this.badFlightCountLastYearRank = badFlightCountLastYearRank;
	}

	public Integer getBadFlightCountLastMonthRank() {
		return badFlightCountLastMonthRank;
	}

	public void setBadFlightCountLastMonthRank(Integer badFlightCountLastMonthRank) {
		this.badFlightCountLastMonthRank = badFlightCountLastMonthRank;
	}

	public int getLastVacationAndStopFlyRank() {
		return lastVacationAndStopFlyRank;
	}

	public void setLastVacationAndStopFlyRank(int lastVacationAndStopFlyRank) {
		this.lastVacationAndStopFlyRank = lastVacationAndStopFlyRank;
	}

	public int getSeatDurationAllRank() {
		return seatDurationAllRank;
	}

	public void setSeatDurationAllRank(int seatDurationAllRank) {
		this.seatDurationAllRank = seatDurationAllRank;
	}
	
	
	
}
